
package com.hlkj.pay.service.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.pay.dto.merchant.config.MerchantPaymentAccountConfigPageQueryDto;
import com.hlkj.pay.dto.merchant.config.MerchantPaymentConfigMappingDto;
import com.hlkj.pay.dto.merchant.config.MerchantPaymentConfigMappingPageQueryDto;
import com.hlkj.pay.infrastructure.model.merchant.MerchantConfigDO;
import com.hlkj.pay.infrastructure.model.merchant.MerchantPaymentAccountConfigDO;
import com.hlkj.pay.infrastructure.model.merchant.MerchantPaymentConfigMappingDO;

/**
 * @author HlpayTeam
 * @date 2024/09/12 13:40
 */
public interface IMerchantConfigService {


    /**
     * query config
     * 
     * @param sn
     * @return
     */
    MerchantConfigDO queryConfig(String sn);

    /**
     * query config
     * 
     * @param snList
     * @return
     */
    List<MerchantConfigDO> queryConfig(List<String> snList);

    /**
     * save config
     * 
     * @param merchantConfigDb
     */
    void saveConfig(MerchantConfigDO merchantConfigDb);

    /**
     * update config
     * 
     * @param merchantConfigDb
     */
    void updateConfig(MerchantConfigDO merchantConfigDb);

    /**
     *
     * @param sn
     */
    void delConfig(String sn);

    /**
     *
     * @param reportId
     * @param cardNo
     * @return
     */
    MerchantPaymentAccountConfigDO queryPaymentAccountConfig(String cardNo);

    /**
     *
     * @param merchantPaymentAccountConfigDO
     */
    void addPaymentAccountConfig(MerchantPaymentAccountConfigDO merchantPaymentAccountConfigDO);

    /**
     *
     * @param merchantPaymentAccountConfigDO
     */
    void updatePaymentAccountConfig(MerchantPaymentAccountConfigDO merchantPaymentAccountConfigDO);

    /**
     *
     * @param id
     */
    void delPaymentAccountConfig(Long id);

    /**
     *
     * @param id
     * @return
     */
    MerchantPaymentAccountConfigDO queryPaymentAccountConfigByCode(String id);



    /**
     *
     * @param merchantPaymentAccountConfigPageQueryDto
     * @return
     */
    PageResult<MerchantPaymentAccountConfigDO> queryConfigPage(MerchantPaymentAccountConfigPageQueryDto merchantPaymentAccountConfigPageQueryDto);
    /**
     *
     * @param merchantPaymentAccountConfigPageQueryDto
     * @return
     */
    List<MerchantPaymentAccountConfigDO> queryConfigList(MerchantPaymentAccountConfigPageQueryDto merchantPaymentAccountConfigPageQueryDto);

    /**
     *
     * @param merchantPaymentConfigMappingDO
     * @param merchantPaymentConfigMappingDO
     */
    void addMerchantReportConfig(MerchantPaymentConfigMappingDO merchantPaymentConfigMappingDO);

    /**
     *
     * @param merchantPaymentConfigMappingDO
     * @param merchantPaymentConfigMappingDO
     */
    void updateMerchantReportConfig(MerchantPaymentConfigMappingDO merchantPaymentConfigMappingDO);

    /**
     *
     * @param id
     */
    void delMerchantReportConfig(Long id);

    /**
     *
     * @param relationId
     * @param relationType
     * @param accountCode
     * @return
     */
    MerchantPaymentConfigMappingDO queryConfigMapping(String relationId, Integer relationType, String accountCode);

    /**
     *
     * @param pageQueryDto
     * @return
     */
    PageResult<MerchantPaymentConfigMappingDto> queryConfigMappingPage(MerchantPaymentConfigMappingPageQueryDto pageQueryDto);
    /**
     *
     * @param relationId
     * @param relationType
     * @return
     */
    List<MerchantPaymentConfigMappingDto> queryConfigMappingList(String relationId, Integer relationType);

}
